<?php
/**
 * Created by PhpStorm.
 * Author: ljz
 * Date: 2023/5/09
 * Time: 12:01
 */

namespace App\backend\models;


use App\common\models\BaseModel;
use Illuminate\Support\Facades\DB;

/**
 * Class CouponUseLogModel
 * @package app\backend\models
 */
class CouponUseLogModel extends BaseModel
{
    const table = 'coupon_use_log';

    public function __construct()
    {

    }

    /**
     * 查询字段规则
     *
     * @return array
     */
    static public function rules()
    {
        return [];
    }

    /**
     * 添加 使用记录
     *
     * @return array
     */
    static public function add_rules()
    {
        return [
            'coupon_id' => 'required|int', // 卡券ID
            'member_id' => 'required|string', //会员ID
            'number' => 'required|int', //发券数量
        ];
    }

    /**
     * 字段验证返回错误信息
     *
     * @return array
     */
    static public function message()
    {
        return [
            'coupon_id.required' => '卡券ID不能为空',
            'member_id.required' => '会员ID不能为空',
            'number.required' => '发券数量不能为空',
            'coupon_id.integer' => '卡券ID数据类型错误',
            'number.integer' => '发券数量数据类型错误',
        ];
    }

    /**
     * 数据库 - 查询卡券列表
     * @param $page string //分页页数
     * @param $limit string //分页条数
     * @param $where_in_data array //in 查询条件 参数数组
     * @param $where_data array //查询条件 参数数组
     * @return array
     */
    static public function listed($page, $limit, $where_data = [], $where_in_data = [])
    {
        $query = DB::table(self::table)
            ->select('id', 'coupon_id', 'member_id', 'use_type', 'verification', 'shop_id', 'verification_at')
            ->where($where_data);

        if (!empty($where_in_data)) {
            $query->whereIn('id', $where_in_data);
        }

        $data = $query->apiPaginate($limit, ['*'], 'page', $page)->toArray();

        return $data;
    }

    /**
     * 数据库 - 更新数据
     * @param $id //卡券ID
     * @param $data //参数数组
     * @return array
     */
    static public function updatedData($id, $data)
    {
        $data = DB::table(self::table)
            ->where('id', '=', $id)
            ->update($data);

        return $data;
    }

    /**
     * 数据库 - 插入数据
     * @param $data //参数数组
     * @return array
     */
    static public function insertData($data)
    {
        $data = DB::table(self::table)->insert($data);
        return $data;
    }

    /**
     * 数据库 - 获取已使用数量
     * @param $data //参数数组
     * @return array
     */
    static public function getUseNumber($where_data)
    {
        $data = DB::table(self::table)
            ->where($where_data)
            ->count();

        return $data;
    }

    /**
     * 获取会员id
     *
     * @param $keyWord
     * @return array
     */
    public static function getMemberIds($keyWord)
    {
        $data = DB::table('members')
            ->select('id')
            ->where(['id' => $keyWord])
            ->orWhere(['nickname', 'LIKE', '%' . $keyWord . '%'])
            ->orWhere(['realname', 'LIKE', '%' . $keyWord . '%'])
            ->orWhere(['mobile', 'LIKE', '%' . $keyWord . '%'])
            ->get()
            ->map(function ($value) {
                return (array)$value;
            })
            ->toArray();

        return $data;
    }

    /**
     * 获取会员名称
     *
     * @param $ids
     * @return array
     */
    public static function getMemberName($ids)
    {
        $data = DB::table('members')
            ->select('id', 'nickname as name')
            ->whereIn('id', $ids)
            ->get()
            ->map(function ($value) {
                return (array)$value;
            })
            ->toArray();

        return $data;
    }

    /**
     * 获取门店名称
     *
     * @param $ids
     * @return array
     */
    public static function getShopName($ids)
    {
        $data = DB::table('store')
            ->select('id', 'store_name as name')
            ->whereIn('id', $ids)
            ->get()
            ->map(function ($value) {
                return (array)$value;
            })
            ->toArray();

        return $data;
    }

    /**
     * 获取商品名称
     *
     * @param $ids
     * @return array
     */
    public static function getGoodsName($ids)
    {
        $data = DB::table('goods')
            ->select('id', 'title as name')
            ->whereIn('id', $ids)
            ->get()
            ->map(function ($value) {
                return (array)$value;
            })
            ->toArray();

        return $data;
    }

    /**
     * 获取商品分类名称
     *
     * @param $ids
     * @return array
     */
    public static function getCategoryName($ids)
    {
        $data = DB::table('category')
            ->select('id', 'name')
            ->whereIn('id', $ids)
            ->get()
            ->map(function ($value) {
                return (array)$value;
            })
            ->toArray();

        return $data;
    }

    /**
     * 获取商品分类名称
     *
     * @param $ids
     * @return array
     */
    public static function getGroupName($ids)
    {
        $data = DB::table('goods_group')
            ->select('id', 'name')
            ->whereIn('id', $ids)
            ->get()
            ->map(function ($value) {
                return (array)$value;
            })
            ->toArray();

        return $data;
    }
}
